package com.candy.control;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Controller
public class FileUploadController {
    //    读取配置文件中配置的图片上传路径装配到dir上
    @Value("${file.uploadFolder}")
    String  dir;

    @RequestMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file) throws IOException {
        System.out.println(file);
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
        //准备文件夹(以图片上传时间准备图片上传的文件目录)
        String format = sdf.format(new Date());
//        String  dir="E:\\CodeSpace\\img";
//        根据指定路径创建文件所放置的文件夹
        File folder = new File(dir,format);
//        如果该文件夹不存在，则在本地创建一个文件夹
        if(!folder.exists()){
            folder.mkdirs();//
        }

        String oldName = file.getOriginalFilename();//获取后缀
//        拼接新文件的名字(UUID.randomUUID()会生成一个全球唯一不重复的uuid码)
        String fileName= UUID.randomUUID().toString() +oldName.substring(oldName.lastIndexOf("."));
//      根据准备好文件目录以及文件名字,进行创建文件对象
        File file1 = new File(folder, fileName);
        //上传
        file.transferTo(file1);
        String imgUrl="http://localhost:8086/"+format+fileName;
//        返回视图时,可以携带数据
//        model.addAttribute("imgSrc",imgUrl);
        //组装url(直接将图片上传后的地址响应给客户端)
        return imgUrl;
    }
}
